/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Persistencia;

//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.text.ParseException;
//import java.util.ArrayList;
//import java.util.Iterator;
//import java.util.List;
import Motor.Factura;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

// *
// * @author Carlos A
// */
public class DAOFacturaXML {
    /** variable que contiene la raiz del documento Xml*/
    private Element root;
    /** variable que contiene la localizacion del archivo xml*/
    private String fileLocation = "src//archivo//Clientes.xml";

    public DAOFacturaXML() throws IOException
	{
        try {
            SAXBuilder builder = new SAXBuilder(false);
            Document doc = null;
            doc = builder.build(fileLocation);
            root = doc.getRootElement();
        } catch (JDOMException ex) {
            System.out.println("No se pudo iniciar la operacion por: " + ex.getMessage());
        } catch (IOException ex) {
            System.out.println("No se pudo iniciar la operacion por: " + ex.getMessage());
        }
    }

    public Element FacturatoXmlElement(Factura factura)
	{

        Element nuevaFactura = new Element("factura");

//		public Factura(int idFactura, Date timeStamp, int idCajera, float monto, float iva, MetodoDePago
//	elMetodoDePago)
        Element idFactura = new Element("idFactura");
        idFactura.setText(Integer.toString(factura.getIdFactura()));
//        Element timeStamp = new Element("timeStamp");
//        timeStamp.setText(factura.getTimeStamp().toString());
        Element idCajera = new Element("idCajera");
        idCajera.setText(Integer.toString(factura.getIdCajera()));
        Element monto = new Element("monto");
        monto.setText(Float.toString(factura.getMonto()));
        Element iva = new Element("iva");
        iva.setText(Float.toString(factura.getIva()));

//        DAOTarjetaDeAfiliadoXML tarjertaDeAfiliado = new DAOTarjetaDeAfiliadoXML();
//
//		raizCliente.addContent(tarjertaDeAfiliado.TarjetaDeAfiliadotoXmlElement(cliente.getLaTarjeta()));

		nuevaFactura.addContent(idFactura);
	//	nuevaFactura.addContent(timeStamp);
		nuevaFactura.addContent(idCajera);
		nuevaFactura.addContent(monto);
		nuevaFactura.addContent(iva);

//
//        if (medico.getRegistroES() != null){
//            DAOEntradaSalidaXML entSal = new DAOEntradaSalidaXML();
//            Iterator i = (medico.getRegistroES()).iterator();
//            while (i.hasNext()){
//                nuevoMedico.addContent(entSal.EntradaSalidatoXmlElement((EntradaSalida) i.next()));
//            }
//        }

        return nuevaFactura;
    }

    private boolean updateDocument() {
        try {
            XMLOutputter out = new XMLOutputter();
            FileOutputStream file = new FileOutputStream(fileLocation);
            out.output(root, file);
            file.flush();
            file.close();
            return true;
        } catch (Exception e) {
            System.out.println("error: " + e.getMessage());
            return false;
        }
    }

//    public boolean agregarMedico(Medico ali) {
//        boolean resultado = false;
//        root.addContent(MedicotoXmlElement(ali));
//        resultado = updateDocument();
//        return resultado;
//    }
//
//    public static Element buscar(List raiz, String dato)
//	{
//        Iterator i = raiz.iterator();
//        while (i.hasNext()) {
//            Element e = (Element) i.next();
//            if (dato.equals(e.getChild("cedula").getText())) {
//                return e;
//            }
//        }
//        return null;
//    }
//
    public Factura FacturaToObject(Element element)
	{
        Factura factura = new Factura();

		// DAOInventarioXML inv = new DAOInventarioXML();
		//	private int idFactura;
		//	private Date timeStamp
		//	private int idCajera;
		//	private float monto;
		//	private float iva;
		//	private MetodoDePago elMetodoDePago;
		//
		factura.setIdFactura(Integer.parseInt(element.getChildText("idFactura")));
		//factura.setTimeStamp(element.getChildText("timeStamp"));
		factura.setIdCajera(Integer.parseInt(element.getChildText("idCajera")));
		factura.setMonto(Float.parseFloat(element.getChildText("monto")));
		factura.setIva(Float.parseFloat(element.getChildText("iva")));


      //  clinica.setInventario(inv.InventarioToObject(element.getChild("inventario")));


//        medico.setNombreCompleto(element.getChildText("nombre"));
//        medico.setCedula(Integer.parseInt(element.getChildText("cedula")));
//        String st = (element.getChildText("fechanacimiento"));
//        HoraFecha hf = new HoraFecha(st.split("/"));
//        medico.setFechaNacimiento(hf);
//        medico.setUsuario(element.getChildText("usuario"));
//        medico.setContrasena(element.getChildText("contrasena"));
//        medico.setResidencia(element.getChildText("residencia"));
//        medico.setTelefono(element.getChildText("telefono"));
//        medico.setNumeroColegiatura(Integer.parseInt(element.getChildText("numerocolegiatura")));
//        medico.setUniversidadEgreso(element.getChildText("universidade"));
//        medico.setEstudiosEspeciales(element.getChildText("estudiosespeciales"));
//        medico.setEspecialidad(element.getChildText("especialidad"));
//        medico.setExperiencia(element.getChildText("experiencia"));
//        medico.setInstitucionAsignada(element.getChildText("institucionasignada"));
//
//        DAOEntradaSalidaXML entSal = new DAOEntradaSalidaXML();
//
//        for (Object it : element.getChildren("entradasalida")) {
//            Element xmlElem = (Element) it;
//            try {
//                medico.nuevoRegistroES(entSal.EntradaSalidaToObject(xmlElem));
//            } catch (ParseException ex) {
//                System.out.println(ex.getMessage());
//            }
//        }
        return factura;
    }
//
//    public ArrayList<Medico> todosLosEquiposMedicos() {
//        ArrayList<Medico> resultado = new ArrayList<Medico>();
//        for (Object it : root.getChildren()) {
//            Element xmlElem = (Element) it;
//            try {
//                resultado.add(MedicoToObject(xmlElem));
//            } catch (ParseException ex) {
//                System.out.println(ex.getMessage());
//            }
//        }
//        return resultado;
//    }
//
//	public ArrayList<Medico> todosLosMedicos() {
//        ArrayList<Medico> resultado = new ArrayList<Medico>();
//        for (Object it : root.getChildren()) {
//            Element xmlElem = (Element) it;
//            try {
//                resultado.add(MedicoToObject(xmlElem));
//            } catch (ParseException ex) {
//                System.out.println(ex.getMessage());
//            }
//        }
//        return resultado;
//    }

}
